iT邦幫忙

2022 iThome 鐵人賽

DAY 28
0
自我挑戰組

初入Swift新手村的旅程系列 第 28

Day28 Any與AnyObject

  • 分享至 

  • xImage
  •  

AnyObject

在實際開發中,開發者經常會使用到一些通用類型,NSObject類是大部分類的一個基類,使用基類作為陣列的元素類型接收不同子類的元素。其實如果陣列中的元素是不同類型,並且這些類型沒有一個共同的基類,那麼開發者可以使用AnyObject來作為引用類型的通用類型。

// 建立三個各自獨立的class
class MyClassOne {
    
}
class MyClassTwo {
    
}
class MyClassThree {
    
}
var clsOne = MyClassOne()
var clsTwo = MyClassTwo()
var clsThree = MyClassThree()
//
var clsArray:Array<AnyObject> = [clsOne,clsTwo,clsThree]
for obj in clsArray{
    // 進行類型的匹配
    if obj is MyClassOne{
        print("MyClassOne")
    }else if obj is MyClassTwo{
        print("MyClassTwo")
    }else if obj is MyClassThree{
        print("MyClassThree")
    }
}

需要注意的是,AnyObject是通用的引用類型,其並不能用來描述值類型,例如上面的不能存放struct、enum等類型資料,Swift中還提供了一種更加通用的類型Any,它可以用來描述任意類型。

Any

// 建立三個各自獨立的class
class MyClassOne {
    
}
class MyClassTwo {
    
}
class MyClassThree {
    
}
// 進行類的實例化
var clsOne = MyClassOne()
var clsTwo = MyClassTwo()
var clsThree = MyClassThree()
// 建立一個Any元素類型的陣列
var anyArray:Array<Any> = [clsOne,clsTwo,clsThree,100,"andy",false,(1,1),{() -> () in print("Closures")}]

上面包含自定義類型實例、整數、字串、Bool、元組、閉包等等。

接下來,是類型轉換的介紹


上一篇
Day27 Swift 協定
下一篇
Day29 類型轉換
系列文
初入Swift新手村的旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言